package com.ruoyi.ma.service;

import com.ruoyi.common.core.domain.R;
import com.ruoyi.ma.domain.MaReportFormPayment;
import com.ruoyi.ma.domain.vo.MaReportFormPaymentVo;
import com.ruoyi.ma.domain.bo.MaReportFormPaymentBo;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.domain.PageQuery;

import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * 往期材料支付报表Service接口
 *
 * @author tll
 * @date 2024-11-27
 */
public interface IMaReportFormPaymentService {

    /**
     * 查询往期材料支付报表
     */
    MaReportFormPaymentVo queryById(Long reportId);

    /**
     * 查询往期材料支付报表列表
     */
    TableDataInfo<MaReportFormPaymentVo> queryPageList(MaReportFormPaymentBo bo, PageQuery pageQuery);

    /**
     * 查询往期材料支付报表列表
     */
    List<MaReportFormPaymentVo> queryList(MaReportFormPaymentBo bo);

    /**
     * 新增往期材料支付报表
     */
    Boolean insertByBo(MaReportFormPaymentBo bo);

    /**
     * 修改往期材料支付报表
     */
    Boolean updateByBo(MaReportFormPaymentBo bo);

    /**
     * 校验并批量删除往期材料支付报表信息
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);

    // 导出封面
    void importFm(HttpServletResponse response, MaReportFormPaymentBo bo);

    // 导出支付申请
    void importZfsq(HttpServletResponse response, MaReportFormPaymentBo bo);

    // 导出支付明细
    void importZfmx(HttpServletResponse response, MaReportFormPaymentBo bo);

    // 导出月度供货
    void importYdgh(HttpServletResponse response, MaReportFormPaymentBo bo);

    // 获取往期材料支付报表详细信息
    MaReportFormPaymentVo detail(MaReportFormPaymentBo bo);

    /**
     * 支付情况统计明细
     * @param bo
     * @return
     */
    Map<String, Object> statistics(MaReportFormPaymentBo bo);

}
